package com.wtb.javatool.dao;

import com.wtb.javatool.dto.UserDto;
import com.wtb.javatool.entity.Student;
import com.wtb.javatool.entity.Teacher;
import com.wtb.javatool.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserMapper {

    /**
     * 查找普通项目用户。
     *
     * @param userId   用户的ID
     * @param userName 用户的名称
     * @param phone    用户的手机号
     * @return 查找到的用户列表
     */
    List<User> findNormalUser(
            @Param("userId") Long userId,
            @Param("userName") String userName,
            @Param("phone") String phone
    );

    /**
     * 查找课程项目企业用户。
     *
     * @param userId   用户的ID
     * @param userName 用户的名称
     * @param phone    用户的手机号
     * @return 查找到的用户列表
     */
    List<User> findManagerUser(@Param("userId") Long userId,
                               @Param("userName") String userName,
                               @Param("phone") String phone);


    /**
     * 查找课程项目学生用户。
     *
     * @param userId   用户的ID
     * @param userName 用户的名称
     * @param phone    用户的手机号
     * @return 查找到的用户列表
     */
    List<User> findStudentUser(@Param("userId") Long userId,
                               @Param("userName") String userName,
                               @Param("phone") String phone);

    /**
     * 查询单个班级的学生
     *
     * @param classId   班级id
     * @param teamId    小组id 筛选用
     * @param studentId 学生学号 筛选用
     * @param userName  学生名称 筛选用
     * @param begin     开始单位
     * @param size      每页个数
     * @return
     */
    List<UserDto> findClassStudents(@Param("classId") Long classId,
                                    @Param("teamId") Long teamId,
                                    @Param("studentId") Long studentId,
                                    @Param("userName") String userName,
                                    @Param("haveTeam") Integer haveTeam,
                                    @Param("begin") Integer begin,
                                    @Param("size") Integer size);
    Integer findClassStudentsCount(@Param("classId") Long classId,
                                   @Param("teamId") Long teamId,
                                   @Param("studentId") Long studentId,
                                   @Param("userName") String userName,
                                   @Param("haveTeam") Integer haveTeam);
    void setTeamForStudents(@Param("classId")Long classId, @Param("teamId")Long teamId,@Param("list")List<Long> studentIds);


    List<Student> findAllStudents(@Param("studentId") Long studentId,
                                  @Param("studentName") String studentName,
                                  @Param("classId") Long classId,
                                  @Param("begin") Integer begin,
                                  @Param("size") Integer size);
    Integer findAllStudentsCount(@Param("studentId") Long studentId,
                                 @Param("studentName") String studentName,
                                 @Param("classId") Long classId);
    int insertUser(User user);

    int insertStudent(@Param("studentId") Long studentId,
                      @Param("userId") Long bandId,
                      @Param("studentName") String studentName,
                      @Param("phone") String phone);
    int insertTeacher(@Param("teacherId") Long studentId,
                      @Param("userId") Long bandId,
                      @Param("teacherName") String studentName);


    // 插入角色信息
    int insertUserRole(@Param("userId") Long userId,
                       @Param("role") int role);

    User findUserByPassword(@Param("userId") Long userId,
                           @Param("password")String password,
                           @Param("paramRole") int role);
}
